#ifndef GAMEABILITYVISITOR_H
#define GAMEABILITYVISITOR_H

class GameAbility;
class BlockMoveAbility;
class MoveAbility;
class TurnAbility;
class ActivateAbility;
class HitAbility;
class BlockHitAbility;
class CheckpointReachedAbility;
class RepairpointReachedAbility;
class DropAbility;

class GameAbilityVisitor
{
public:
	GameAbilityVisitor();
	virtual ~GameAbilityVisitor();

	virtual void Visit(GameAbility& ability);
	virtual void Visit(BlockMoveAbility& ability);
	virtual void Visit(MoveAbility& ability);
	virtual void Visit(TurnAbility& ability);
	virtual void Visit(ActivateAbility& ability);
	virtual void Visit(BlockHitAbility& ability);
	virtual void Visit(HitAbility& ability);
	virtual void Visit(CheckpointReachedAbility& ability);
	virtual void Visit(RepairpointReachedAbility& ability);
	virtual void Visit(DropAbility& ability);

private:
};

#endif //GAMEABILITYVISITOR_H
